{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import pylab as pl\n",
    "from scipy import stats"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import matplotlib.pyplot as plt\n",
    "import matplotlib as mpl\n",
    "mpl.rcParams['font.sans-serif'] = ['SimHei']"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 统计-stats"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 连续概率分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "['ksone',\n",
       " 'kstwobign',\n",
       " 'norm',\n",
       " 'alpha',\n",
       " 'anglit',\n",
       " 'arcsine',\n",
       " 'beta',\n",
       " 'betaprime',\n",
       " 'bradford',\n",
       " 'burr',\n",
       " 'burr12',\n",
       " 'fisk',\n",
       " 'cauchy',\n",
       " 'chi',\n",
       " 'chi2',\n",
       " 'cosine',\n",
       " 'dgamma',\n",
       " 'dweibull',\n",
       " 'expon',\n",
       " 'exponnorm',\n",
       " 'exponweib',\n",
       " 'exponpow',\n",
       " 'fatiguelife',\n",
       " 'foldcauchy',\n",
       " 'f',\n",
       " 'foldnorm',\n",
       " 'weibull_min',\n",
       " 'weibull_max',\n",
       " 'frechet_r',\n",
       " 'frechet_l',\n",
       " 'genlogistic',\n",
       " 'genpareto',\n",
       " 'genexpon',\n",
       " 'genextreme',\n",
       " 'gamma',\n",
       " 'erlang',\n",
       " 'gengamma',\n",
       " 'genhalflogistic',\n",
       " 'gompertz',\n",
       " 'gumbel_r',\n",
       " 'gumbel_l',\n",
       " 'halfcauchy',\n",
       " 'halflogistic',\n",
       " 'halfnorm',\n",
       " 'hypsecant',\n",
       " 'gausshyper',\n",
       " 'invgamma',\n",
       " 'invgauss',\n",
       " 'invweibull',\n",
       " 'johnsonsb',\n",
       " 'johnsonsu',\n",
       " 'laplace',\n",
       " 'levy',\n",
       " 'levy_l',\n",
       " 'levy_stable',\n",
       " 'logistic',\n",
       " 'loggamma',\n",
       " 'loglaplace',\n",
       " 'lognorm',\n",
       " 'gilbrat',\n",
       " 'maxwell',\n",
       " 'mielke',\n",
       " 'kappa4',\n",
       " 'kappa3',\n",
       " 'nakagami',\n",
       " 'ncx2',\n",
       " 'ncf',\n",
       " 't',\n",
       " 'nct',\n",
       " 'pareto',\n",
       " 'lomax',\n",
       " 'pearson3',\n",
       " 'powerlaw',\n",
       " 'powerlognorm',\n",
       " 'powernorm',\n",
       " 'rdist',\n",
       " 'rayleigh',\n",
       " 'reciprocal',\n",
       " 'rice',\n",
       " 'recipinvgauss',\n",
       " 'semicircular',\n",
       " 'skewnorm',\n",
       " 'trapz',\n",
       " 'triang',\n",
       " 'truncexpon',\n",
       " 'truncnorm',\n",
       " 'tukeylambda',\n",
       " 'uniform',\n",
       " 'vonmises',\n",
       " 'vonmises_line',\n",
       " 'wald',\n",
       " 'wrapcauchy',\n",
       " 'gennorm',\n",
       " 'halfgennorm',\n",
       " 'crystalball',\n",
       " 'argus']"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from scipy import stats\n",
    "[k for k, v in stats.__dict__.items() if isinstance(v, stats.rv_continuous)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array(0.), array(1.))"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats.norm.stats()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array(1.), array(4.))"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X = stats.norm(loc=1.0, scale=2.0)\n",
    "X.stats()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1.0048352738823323, 3.9372117720073554)"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = X.rvs(size=10000) # 对随机变量取10000个值\n",
    "np.mean(x), np.var(x) # 期望值和方差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(1.0048352738823323, 1.984240855341749)"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats.norm.fit(x) # 得到随机序列期望值和标准差"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "max pdf error: 0.018998755595167102, max cdf error: 0.018503342378306975\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\ProgramData\\Anaconda3\\lib\\site-packages\\ipykernel_launcher.py:1: VisibleDeprecationWarning: Passing `normed=True` on non-uniform bins has always been broken, and computes neither the probability density function nor the probability mass function. The result is only correct if the bins are uniform, when density=True will produce the same result anyway. The argument will be removed in a future version of numpy.\n",
      "  \"\"\"Entry point for launching an IPython kernel.\n"
     ]
    }
   ],
   "source": [
    "pdf, t = np.histogram(x, bins=100, normed=True)  #❶\n",
    "t = (t[:-1] + t[1:]) * 0.5  #❷\n",
    "cdf = np.cumsum(pdf) * (t[1] - t[0])  #❸\n",
    "p_error = pdf - X.pdf(t)\n",
    "c_error = cdf - X.cdf(t)\n",
    "print (\"max pdf error: {}, max cdf error: {}\".format(\n",
    "    np.abs(p_error).max(),\n",
    "    np.abs(c_error).max()))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20554bb0f60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#%figonly=正态分布的概率密度函数（左）和累积分布函数（右）\n",
    "fig, (ax1, ax2) = pl.subplots(1, 2, figsize=(7, 2))\n",
    "ax1.plot(t, pdf, label=u\"统计值\")\n",
    "ax1.plot(t, X.pdf(t), label=u\"理论值\", alpha=0.6)\n",
    "ax1.legend(loc=\"best\")\n",
    "ax2.plot(t, cdf)\n",
    "ax2.plot(t, X.cdf(t), alpha=0.6); "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(array(1.), array(1.))\n",
      "(array(2.), array(2.))\n"
     ]
    }
   ],
   "source": [
    "print(stats.gamma.stats(1.0))\n",
    "print(stats.gamma.stats(2.0))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(array(4.), array(8.))"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats.gamma.stats(2.0, scale=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([4.40563983, 6.17699951, 3.65503843, 3.28052152])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = stats.gamma.rvs(2, scale=2, size=4)\n",
    "x   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.12169605, 0.07037188, 0.14694352, 0.15904745])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats.gamma.pdf(x, 2, scale=2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.12169605, 0.07037188, 0.14694352, 0.15904745])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X = stats.gamma(2, scale=2) \n",
    "X.pdf(x)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 离散概率分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [],
   "source": [
    "x = range(1, 7)    \n",
    "p = (0.4, 0.2, 0.1, 0.1, 0.1, 0.1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([2, 5, 2, 6, 1, 6, 6, 5, 3, 1, 5, 2, 1, 1, 1, 1, 1, 2, 1, 6])"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "dice = stats.rv_discrete(values=(x, p))\n",
    "dice.rvs(size=20)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "np.random.seed(42)\n",
    "samples = dice.rvs(size=(20000, 50))\n",
    "samples_mean = np.mean(samples, axis=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 核密度估计"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x20556d5f5c0>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20556d0fe80>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#%fig=核密度估计能更准确地表示随机变量的概率密度函数\n",
    "_, bins, step = pl.hist(\n",
    "    samples_mean, bins=100, normed=True, histtype=\"step\", label=u\"直方图统计\")\n",
    "kde = stats.kde.gaussian_kde(samples_mean)\n",
    "x = np.linspace(bins[0], bins[-1], 100)\n",
    "pl.plot(x, kde(x), label=u\"核密度估计\")\n",
    "mean, std = stats.norm.fit(samples_mean)\n",
    "pl.plot(x, stats.norm(mean, std).pdf(x), alpha=0.8, label=u\"正态分布拟合\")\n",
    "pl.legend()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXYAAAD7CAYAAAB+B7/XAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzsvXlwHNd97/s53bPPYLCT4L6Ii/aNlERqpW1ZiyXb2kJZsmXZz46T59SLK66yc289v8hxfO9LUrf8KnGVb0qx7ETypsWSbEWRQlESJVGLJdIiKYrauIkESYDYZjCDWbv7vD+6e2YAzAADYAYggfOpYmE4c7rPGQr6nl9/z+/8jpBSolAoFIrZgzbTA1AoFApFbVHCrlAoFLMMJewKhUIxy1DCrlAoFLMMJewKhUIxy1DCrlAoFLMMJewKhUIxy1DCrlAoFLMMJewKhUIxy1DCrlAoFLMMz0x02tbWJpcvXz4TXSsUCsVpy86dO3ullO3jtZsRYV++fDk7duyYia4VCoXitEUI8XE17ZQVo1AoFLMMJewKhUIxy1DCrlAoFLOMGfHYFQqFohL5fJ7Ozk4ymcxMD2XGCAQCLF68GK/XO6nrlbArFIpTis7OThoaGli+fDlCiJkezrQjpaSvr4/Ozk5WrFgxqXsoK0ahUJxSZDIZWltb56SoAwghaG1tndITixJ2xSlH92CG7R/1kjXMae03a5hs/6iXI32pae0XYP/JBDs/7kcdVWkzV0XdZarfXwm74pQinTP5l5cO8PQ7J3h2b9e09v3cvm6efucEP3v1EKmcMW399iaz/PzVwzy28xivfNQ7bf0qKvP973+fbdu2Tera++67j0suuYS/+Iu/qNgmn89z5513ct111/HJT36SgYGBSY60PErYFacUB3qSZPIWALuPxrGs6YlgpZTsPTYIQNaweO/E4LT0C/D+iQTu19x1NDZt/Sqmxn333cemTZsKf775zW+yc+dOtm/fzptvvsm8efPYunVr2WufeeYZbrjhBrZs2cL111/PQw89VNOxqcVTxSnFod6hwut03qRvKEd7g7/u/fYP5Yin84W/H+1Ps25Z3bsFbBvGpWswQ9Yw8Xv06en8FOe/P/5OXe77/9523rhtfvSjH3HfffexYMEC+vr6ePjhh1m9ejUffPABN9xwQ9nd8z/60Y+4/fbbEUJw/fXX88wzz3DttdeOave5z32u8Lqnp4f169dP7QuNQEXsilOKI/22v+3TbY/xRDw9rf36Pfb/El2D05dq1zmQLvQtJZwczE5b34rKrF+/npdeeonGxkY+/vhjnn76aS6//HKefvppzjzzzLLXDA0NsWjRIgBaWlro7u4es4+DBw/ywgsvcPvtt9d07CpiV5wySCnpSdiiduHSJt48NMCJeIbzF9e/775kDoDzFzfy1uEBuuIZpJR1X8RL50yGciZeXbC2o4E9nXG6BzMsaQnVtd/ThWoi63px2WWXAXDxxRezdOlSHnnkEW666SYeffRRPvWpT3Hffffx0ksvFdqfffbZrF69mnTanqiTySSWZVW8fzab5Stf+Qr333//pPPVK6EidsUpQypnkjUs/B6NlW0RwF5YnA76h2xhX9YaIuLXyRoWg+n6L6D2DdnfrzXsp6MxAEC3ithPCXbu3AnAnj178Hg8PPvss1x//fU8//zzXHzxxfzt3/4t27ZtK/z5yU9+wrp169i+fTsAu3fvZqwqtl/96lf5yle+UnMbBpSwK04hXHFtDftoCtkRTCyVH+uSmtHrCGxL2E9TyGf3nc7VvV/3SaE14qNlGvtVjM8rr7zCNddcQ3d3N9/+9rdpbW1l+fLlLF26lIsuuqjsNVdeeSVvv/023/rWt/j7v/977rrrLvr7+/n6178+rN0zzzzDE088wYMPPsimTZv4p3/6p5qOXVkxilOGPkfYWyK+griWLmjWk35HYFucSaVzIE0slWdZa537db5zW2T6JzNFZb7//e+Peq+ry06//eCDDypep2kaW7du5emnn+Zb3/pWYefoT3/602HtbrzxxoJlUw+UsCtOGVwRbwr6aPB70AQkMgZ508Kr1+/h0jAthnImmoBowENT0I2c6y+wgxm7j2jQS2PQFvbBaZrMFPUhGAxyxx13zOgYlBWjOGVIZmxPuyHgQdNEQejqHbUns3a/kYAHIURJ5Fx/SyThfme/l2jAixCQyBoYZuVFN4ViPJSwK04ZEk70GgnYD5LTZU0UxdXudzoj59JJRdMEDQEPUsJgZvp2vipmH0rYFacMrshFHWEPO0Jb7+39rrBHnP4anP6T2frXqnEnM7fPaMCeVJJK2BVTQAm74pShKLBe56crsPUVOff+DY6ohgv91jdil1IWnxbcycyn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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20556d330b8>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#%fig=`bw_method`参数越大核密度估计曲线越平滑\n",
    "for bw in [0.2, 0.3, 0.6, 1.0]:\n",
    "    kde = stats.gaussian_kde([-1, 0, 1], bw_method=bw)\n",
    "    x = np.linspace(-5, 5, 1000)\n",
    "    y = kde(x)\n",
    "    pl.plot(x, y, lw=2, label=\"bw={}\".format(bw), alpha=0.6)\n",
    "pl.legend(loc=\"best\");"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 二项、泊松、伽玛分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([4.01877572e-01, 4.01877572e-01, 1.60751029e-01, 3.21502058e-02,\n",
       "       3.21502058e-03, 1.28600823e-04])"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats.binom.pmf(range(6), 5, 1/6.0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.00675531110335309\n",
      "0.0006301754049777564\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2055839ec18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#%fig=当n足够大时二项分布和泊松分布近似相等\n",
    "lambda_ = 10.0\n",
    "x = np.arange(20)\n",
    "\n",
    "n1, n2 = 100, 1000\n",
    "\n",
    "y_binom_n1 = stats.binom.pmf(x, n1, lambda_ / n1)\n",
    "y_binom_n2 = stats.binom.pmf(x, n2, lambda_ / n2)\n",
    "y_poisson = stats.poisson.pmf(x, lambda_)\n",
    "print(np.max(np.abs(y_binom_n1 - y_poisson)))\n",
    "print(np.max(np.abs(y_binom_n2 - y_poisson)))\n",
    "#%hide\n",
    "fig, (ax1, ax2) = pl.subplots(1, 2, figsize=(7.5, 2.5))\n",
    "\n",
    "ax1.plot(x, y_binom_n1, label=u\"binom\", lw=2)\n",
    "ax1.plot(x, y_poisson, label=u\"poisson\", lw=2, color=\"red\")\n",
    "ax2.plot(x, y_binom_n2, label=u\"binom\", lw=2)\n",
    "ax2.plot(x, y_poisson, label=u\"poisson\", lw=2, color=\"red\")\n",
    "for n, ax in zip((n1, n2), (ax1, ax2)):\n",
    "    ax.set_xlabel(u\"次数\")\n",
    "    ax.set_ylabel(u\"概率\")\n",
    "    ax.set_title(\"n={}\".format(n))\n",
    "    ax.legend()\n",
    "fig.subplots_adjust(0.1, 0.15, 0.95, 0.90, 0.2, 0.1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "time=1000, max_error=0.01964230201602718\n",
      "time=50000, max_error=0.001798012894964722\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2055848d828>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#%fig=模拟泊松分布\n",
    "np.random.seed(42)\n",
    "\n",
    "\n",
    "def sim_poisson(lambda_, time):\n",
    "    t = np.random.uniform(0, time, size=lambda_ * time)  #❶\n",
    "    count, time_edges = np.histogram(t, bins=time, range=(0, time))  #❷\n",
    "    dist, count_edges = np.histogram(\n",
    "        count, bins=20, range=(0, 20), density=True)  #❸\n",
    "    x = count_edges[:-1]\n",
    "    poisson = stats.poisson.pmf(x, lambda_)\n",
    "    return x, poisson, dist\n",
    "\n",
    "\n",
    "lambda_ = 10\n",
    "times = 1000, 50000\n",
    "x1, poisson1, dist1 = sim_poisson(lambda_, times[0])\n",
    "x2, poisson2, dist2 = sim_poisson(lambda_, times[1])\n",
    "max_error1 = np.max(np.abs(dist1 - poisson1))\n",
    "max_error2 = np.max(np.abs(dist2 - poisson2))\n",
    "print(\"time={}, max_error={}\".format(times[0], max_error1))\n",
    "print(\"time={}, max_error={}\".format(times[1], max_error2))\n",
    "#%hide\n",
    "fig, (ax1, ax2) = pl.subplots(1, 2, figsize=(7.5, 2.5))\n",
    "\n",
    "ax1.plot(x1, dist1, \"-o\", lw=2, label=u\"统计结果\")\n",
    "ax1.plot(x1, poisson1, \"->\", lw=2, label=u\"泊松分布\", color=\"red\", alpha=0.6)\n",
    "ax2.plot(x2, dist2, \"-o\", lw=2, label=u\"统计结果\")\n",
    "ax2.plot(x2, poisson2, \"->\", lw=2, label=u\"泊松分布\", color=\"red\", alpha=0.6)\n",
    "\n",
    "for ax, time in zip((ax1, ax2), times):\n",
    "    ax.set_xlabel(u\"次数\")\n",
    "    ax.set_ylabel(u\"概率\")\n",
    "    ax.set_title(u\"time = {}\".format(time))\n",
    "    ax.legend(loc=\"lower center\")\n",
    "\n",
    "fig.subplots_adjust(0.1, 0.15, 0.95, 0.90, 0.2, 0.1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20558482710>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#%fig=模拟伽玛分布\n",
    "def sim_gamma(lambda_, time, k):\n",
    "    t = np.random.uniform(0, time, size=lambda_ * time) #❶\n",
    "    t.sort()  #❷\n",
    "    interval = t[k:] - t[:-k] #❸\n",
    "    dist, interval_edges = np.histogram(interval, bins=100, density=True) #❹\n",
    "    x = (interval_edges[1:] + interval_edges[:-1])/2  #❺\n",
    "    gamma = stats.gamma.pdf(x, k, scale=1.0/lambda_) #❺\n",
    "    return x, gamma, dist\n",
    "\n",
    "lambda_ = 10\n",
    "time = 1000\n",
    "ks = 1, 2\n",
    "x1, gamma1, dist1 = sim_gamma(lambda_, time, ks[0])\n",
    "x2, gamma2, dist2 = sim_gamma(lambda_, time, ks[1])\n",
    "#%hide\n",
    "fig, (ax1, ax2) = pl.subplots(1, 2, figsize=(7.5, 2.5))\n",
    "\n",
    "ax1.plot(x1, dist1,  lw=2, label=u\"统计结果\")\n",
    "ax1.plot(x1, gamma1, lw=2, label=u\"伽玛分布\", color=\"red\", alpha=0.6)\n",
    "ax2.plot(x2, dist2,  lw=2, label=u\"统计结果\")\n",
    "ax2.plot(x2, gamma2, lw=2, label=u\"伽玛分布\", color=\"red\", alpha=0.6)\n",
    "\n",
    "for ax, k in zip((ax1, ax2), ks):\n",
    "    ax.set_xlabel(u\"时间间隔\")\n",
    "    ax.set_ylabel(u\"概率密度\")\n",
    "    ax.set_title(u\"k = {}\".format(k))\n",
    "    ax.legend(loc=\"upper right\")\n",
    "    \n",
    "fig.subplots_adjust(0.1, 0.15, 0.95, 0.90, 0.2, 0.1);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "202.3388747879705"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "T = 100000\n",
    "A_count = int(T / 5)\n",
    "B_count = int(T / 10)\n",
    "\n",
    "A_time = np.random.uniform(0, T, A_count) #❶\n",
    "B_time = np.random.uniform(0, T, B_count)\n",
    "\n",
    "bus_time = np.concatenate((A_time, B_time)) #❷\n",
    "bus_time.sort()\n",
    "\n",
    "N = 200000\n",
    "passenger_time = np.random.uniform(bus_time[0], bus_time[-1], N) #❸\n",
    "\n",
    "idx = np.searchsorted(bus_time, passenger_time) #❹\n",
    "np.mean(bus_time[idx] - passenger_time) * 60    #❺"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "199.99833251643057"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(np.diff(bus_time)) * 60"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x2055839ef60>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#%figonly=观察者偏差\n",
    "import matplotlib.gridspec as gridspec\n",
    "pl.figure(figsize=(7.5, 3))\n",
    "\n",
    "G = gridspec.GridSpec(10, 1)\n",
    "ax1 = pl.subplot(G[:2,  0])\n",
    "ax2 = pl.subplot(G[3:, 0])\n",
    "\n",
    "ax1.vlines(bus_time[:10], 0, 1, lw=2, color=\"blue\", label=u\"公交车\")\n",
    "ptime = np.random.uniform(bus_time[0], bus_time[9], 100)\n",
    "ax1.vlines(ptime, 0, 1, lw=1, color=\"red\", alpha=0.2, label=u\"乘客\")\n",
    "ax1.legend()\n",
    "count, bins = np.histogram(passenger_time, bins=bus_time)\n",
    "ax2.plot(np.diff(bins), count, \".\", alpha=0.3, rasterized=True)\n",
    "ax2.set_xlabel(u\"公交车的时间间隔\")\n",
    "ax2.set_ylabel(u\"等待人数\");"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "200.0"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from scipy import integrate\n",
    "t = 10.0 / 3  # 两辆公交车之间的平均时间间隔\n",
    "bus_interval = stats.gamma(1, scale=t)\n",
    "n, _ = integrate.quad(lambda x: 0.5 * x * x * bus_interval.pdf(x), 0, 1000)\n",
    "d, _ = integrate.quad(lambda x: x * bus_interval.pdf(x), 0, 1000)\n",
    "n / d * 60"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 学生t-分布与t检验"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "max error: 0.006832108369761447\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x20556d89e48>"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXsAAAD7CAYAAACL+TRnAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xl4XNWZ5/HvW5tK+y5ZtiTbsmV5t2ULY2NjBF7CFsIWSAIkJKSh051MepJOJ3lCZzoJ3enO9NCddkKmSchDEiYhZoewGQMGY7zgTV7lXbIlS9a+S1WqqjN/SNjGyKhsl3RreT/Po4cr6ZxbvyqsV1enzj1HjDEopZSKbjarAyillBp5WuyVUioGaLFXSqkYoMVeKaVigBZ7pZSKAVrslVIqBmixV0qpGKDFXimlYoAWe6WUigFa7JVSKgY4gmkkIo8B04GXjTEPfUK7XOA1Y0zphfQDyMrKMhMmTAg2t1JKKWDbtm1Nxpjs4doNW+xF5FbAboxZJCK/FZFiY8yh8zT/dyD+IvoxYcIEtm7dOlwcpZRSZxGR6mDaBTOMUw6sHjxeAyw5zwNeA3QD9RfSTyml1MgLptgnArWDxy1A7rkNRMQF/CPwvQvsd7+IbBWRrY2NjReSWyml1AUIpth3MTg0AySdp8/3gEeMMW0X0s8Y86gxpswYU5adPeyQk1JKqYsUzBu02xgYgtkEzAEODNFmOXCNiPwtMFdEfgO8G0Q/pVQM6+/vp6amhr6+PqujhD23201+fj5Op/Oi+gdT7J8H1ovIWOA64HMi8pAx5sEPGxhjln54LCLrjDFfFZGUc/otvKiESqmoVVNTQ3JyMhMmTEBErI4TtowxNDc3U1NTw8SJEy/qHMMO4xhjOhh4s3UTcLUxpuLsQj9E+/Lz9Gu/qIRKqajV19dHZmamFvphiAiZmZmX9BdQUDdVGWNajTGrjTH1w7e+9H5KWa67CQ6thdpt0F4DPq/ViaJWuBV6n88HQG9v76g83oYNG4J6rEt9nYK6qUqpmNLdBBt+Dp6Oj3y5xSTxQaOTjQ12plx+PV+4Zr5FAVWoXX755WzevBljDNdffz2vvvoqd911Fw899BDTp0//SNtVq1YRHx/PV7/61fOe7/HHH+f222/nvffeQ0T41Kc+NWS7rq4u7rnnHnbt2hXS5zMULfZKna23DTb+cqDQpxbgdaZw6OgRamqO09x5HIApQNfbB6me9jDj83QWWTRITk4GYO3atcycOZP//u//5tChQ2zfvp3k5GTy8vJwOAbKpdPpPH0MA38JnP15dXU1q1at4ktf+hKlpaXceOONXHXVVbjdbgBeeeUVfvrTn2K322lvb6erq4sbb7zxdP9AIMA3v/lNbrvttpA+Ry32KuYZY+j2+mlpacGx+RcEOuppdozhGW85z+5qpsszDhsB8l3d3FbioqBpPTRW8e5T/8U93/gxhNkwhAreE088wapVqzhw4AC33HIL3/72t7nyyitZtWoV3/jGN0hISMBms7Fs2TKcTid9fX1s2LABGLh6dzgc9Pf38+c//5kxY8YA8I1vfIN/+Zd/QUTIzc3l7rvv5q677uLJJ5/E6XRy7bXXsnLlSvr7+1m4cCEHDx7kzTffDHlxP5cWexWzjDF87YntvH2gAXx93Gd/hXxp4pRJ51H/HHo5BcC8wjQ+d1khN8zOIzHOQWPDQl775bexN+xhx7svUXrVTRY/E3Wx7r77bhwOB//5n//Jc889h8fjwW6388ILL7By5Ury8vKIi4vjnXfeAeCXv/wlxhgCgQAPPPAAn//85z9yvv/4j/8gLS2NlStXnv7aN7/5TWpra1m8eDG/+c1vmD17Njabje985zs88MADpKWlsWrVKi32So2UD6paeW1vPU58/JXrDaY42/C6sjmc/XluTM4gLy2eG2fnMSU3+SP9snPGkrTgbno3/obq9/7I9JlziMscb9GziB4TvvfyiJy36l9v+MTvP/HEEzQ3N/OFL3yBm266iV//+tfs37+fw4cP43A4eOGFF0hNTaW5uZnVq1efLvC/+tWvuO6660hLSwMGhm/eeustpkyZwsyZM2lqamLixIn4/X4Avv71r9Pd3Q3Az3/+cx555BFKSkpYvXo1FRUVlJeX09XVxcKFC/nFL34R8tdBi72KWX/achw7fh6ZWsGKTCe4p8Hiv+OOhIxh+97wqev437u3MrFrJ3te/C/m3/3P4HSPQmoVSmvWrCEpKYnx48ezZMkSli5dyuc+9znuvfde/umf/okJEyZgjMHj8XD33Xfzk5/8hH379uF2u/n7v/97brnlFp566imysrIYP348L730EgDz58/n8OHD/PCHP6S6uppvfetbfOlLXwIGhn+efPJJ/uEf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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20558441e48>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#%fig=模拟学生t-分布\n",
    "mu = 0.0\n",
    "n = 10\n",
    "samples = stats.norm(mu).rvs(size=(100000, n))  #❶\n",
    "t_samples = (np.mean(samples, axis=1) - mu) / np.std(\n",
    "    samples, ddof=1, axis=1) * n**0.5  #❷\n",
    "sample_dist, x = np.histogram(t_samples, bins=100, density=True)  #❸\n",
    "x = 0.5 * (x[:-1] + x[1:])\n",
    "t_dist = stats.t(n - 1).pdf(x)\n",
    "print(\"max error:\", np.max(np.abs(sample_dist - t_dist)))\n",
    "#%hide\n",
    "pl.plot(x, sample_dist, lw=2, label=u\"样本分布\")\n",
    "pl.plot(x, t_dist, lw=2, alpha=0.6, label=u\"t分布\")\n",
    "pl.xlim(-5, 5)\n",
    "pl.legend(loc=\"best\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20558a2eb38>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#%figonly=当`df`增大，学生t-分布趋向于正态分布\n",
    "fig, (ax1, ax2) = pl.subplots(1, 2, figsize=(7.5, 2.5))\n",
    "ax1.plot(x, stats.t(6-1).pdf(x), label=u\"df=5\", lw=2)\n",
    "ax1.plot(x, stats.t(40-1).pdf(x), label=u\"df=39\", lw=2, alpha=0.6)\n",
    "ax1.plot(x, stats.norm.pdf(x), \"k--\", label=u\"norm\")\n",
    "ax1.legend()\n",
    "\n",
    "ax2.plot(x, stats.t(6-1).sf(x), label=u\"df=5\", lw=2)\n",
    "ax2.plot(x, stats.t(40-1).sf(x), label=u\"df=39\", lw=2, alpha=0.6)\n",
    "ax2.plot(x, stats.norm.sf(x), \"k--\", label=u\"norm\")\n",
    "ax2.legend();"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "n = 30\n",
    "np.random.seed(42)\n",
    "s = stats.norm.rvs(loc=1, scale=0.8, size=n)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.658584340882224 Ttest_1sampResult(statistic=2.658584340882224, pvalue=0.01263770225709123)\n"
     ]
    }
   ],
   "source": [
    "t = (np.mean(s) - 0.5) / (np.std(s, ddof=1) / np.sqrt(n))\n",
    "print (t, stats.ttest_1samp(s, 0.5))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-1.1450173670383303\n",
      "Ttest_1sampResult(statistic=-1.1450173670383303, pvalue=0.26156414618801477) Ttest_1sampResult(statistic=-0.3842970254542196, pvalue=0.7035619103425202)\n"
     ]
    }
   ],
   "source": [
    "print ((np.mean(s) - 1) / (np.std(s, ddof=1) / np.sqrt(n)))\n",
    "print (stats.ttest_1samp(s, 1), stats.ttest_1samp(s, 0.9))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20558a28208>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#%fig=红色部分为`ttest_1samp()`计算的p值\n",
    "x = np.linspace(-5, 5, 500)\n",
    "y = stats.t(n-1).pdf(x)\n",
    "plt.plot(x, y, lw=2)\n",
    "t, p = stats.ttest_1samp(s, 0.5)\n",
    "mask = x > np.abs(t)\n",
    "plt.fill_between(x[mask], y[mask], color=\"red\", alpha=0.5)\n",
    "mask = x < -np.abs(t)\n",
    "plt.fill_between(x[mask], y[mask], color=\"red\", alpha=0.5)\n",
    "plt.axhline(color=\"k\", lw=0.5)\n",
    "plt.xlim(-5, 5);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.012633433707685974"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from scipy import integrate\n",
    "x = np.linspace(-10, 10, 100000)\n",
    "y = stats.t(n-1).pdf(x)\n",
    "mask = x >= np.abs(t)\n",
    "integrate.trapz(y[mask], x[mask])*2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.012695"
      ]
     },
     "execution_count": 35,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m = 200000\n",
    "mean = 0.5\n",
    "r = stats.norm.rvs(loc=mean, scale=0.8, size=(m, n))\n",
    "ts = (np.mean(s) - mean) / (np.std(s, ddof=1) / np.sqrt(n))\n",
    "tr = (np.mean(r, axis=1) - mean) / (np.std(r, ddof=1, axis=1) / np.sqrt(n))\n",
    "np.mean(np.abs(tr) > np.abs(ts))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Ttest_indResult(statistic=-2.2391470627176755, pvalue=0.033250866086743665)\n",
      "Ttest_indResult(statistic=-0.5946698521856172, pvalue=0.5551805875810539)\n"
     ]
    }
   ],
   "source": [
    "np.random.seed(42)\n",
    "\n",
    "s1 = stats.norm.rvs(loc=1, scale=1.0, size=20)\n",
    "s2 = stats.norm.rvs(loc=1.5, scale=0.5, size=20)\n",
    "s3 = stats.norm.rvs(loc=1.5, scale=0.5, size=25)\n",
    "\n",
    "print (stats.ttest_ind(s1, s2, equal_var=False)) #❶\n",
    "print (stats.ttest_ind(s2, s3, equal_var=True))  #❷"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 卡方分布和卡方检验"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "max error: 0.0030732520533635066\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<matplotlib.legend.Legend at 0x20556ede198>"
      ]
     },
     "execution_count": 37,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAYAAAAD6CAYAAACoCZCsAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMS4yLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvNQv5yAAAIABJREFUeJzt3Xl8VfWd+P/X+y7Jzb4RQth3BJFFdhEMKIhb61a1LrWjHf3229rOdG91xrFj218733HG0lrXGa22KlqhtW64gCICEhRk35SdQEgge27u8v79cS8YYkJuIMm5yX0/H488PDn3c855n4/hvO/5nPP5fERVMcYYk3hcTgdgjDHGGZYAjDEmQVkCMMaYBGUJwBhjEpQlAGOMSVCWAIwxJkFZAjDGmARlCcAYYxKUJQBjjElQHqcDOJUePXrowIEDnQ7DGGO6lDVr1hxR1fzWysV1Ahg4cCDFxcVOh2GMMV2KiOyOpZw1ARljTIKyBGCMMQnKEoAxxiSouH4GYIxJPIFAgH379lFfX+90KHHP5/PRt29fvF7vaW1vCcAYE1f27dtHRkYGAwcOREScDiduqSplZWXs27ePQYMGndY+rAnIGBNX6uvrycvLs4t/K0SEvLy8M7pTsgRgjIk7dvGPzZnWkyWAdvCnVbu58+linvpgF3vLa50OxxjTzoLBIAB1dXWdcrzly5d3yrEsAZyh/3n/M+5euJ73N+7iP/62mkt/8wrXzn+Hkgp7gGVMVzZlyhQg0tZ+6aWXEgqFuOmmm9i0adMXys6fP5/HH3/8lPt78sknqa6u5vXXX+eNN95osVx1dTW33HILoVDozE4gBvYQ+Aw8s3I3v//7Cr7pfpe5veup9gcpqajHf0hZ9MxH3PmP30SS0pwO0xhzGjIyMgB46623GD16NI888gjbt2/no48+IiMjg8LCQjyeyCXU6/WeWIbIHUPj33fv3s38+fO59dZbGT9+PJdffjkXXHABPp8PgFdffZVf/epXuN1uKioqqK6u5vLLLz+xfTgc5rvf/S7XXHNNu56jJYDT9JfivSz861/4tmcl0wemM7x3T3AnUdMQ5pXibWQeXM7uF/YwcPp1MGA6WJumMV3CM888w/z589m6dStXXXUV3//+95kxYwbz58/nrrvuIjU1FZfLxYUXXojX66W+vp7ly5cDkW/5Ho+HQCDA888/T69evQC46667+OUvf4mIUFBQwM0338xNN93Ec889h9frZd68ecydO5dAIMDUqVPZtm0bb7/9drtf8JuyBHAadhyu5oO/Psw17k2M75/D8PEXwDlfgaRU0gB32kq2vf1HfDsP0DvteZIqD8I511oSMKaNBv7klQ7Z767/77IWP7v55pvxeDz893//NwsXLsTv9+N2u/nrX//K3LlzKSwsJDk5mXfffReA3//+96gq4XCYO++8k69+9asn7e+//uu/yM7OZu7cuSfWffe732X//v1Mnz6dxx9/nDFjxuByufjhD3/InXfeSXZ2NvPnz7cEEG9CYeV3zy1ism5iQM8sRl7yTeg78aSL+1VFU/jT5iCr9n1M731rmOp+H9weGHWlJQFjuoBnnnmGsrIybrzxRr70pS/x2GOPsXnzZnbs2IHH4+Gvf/0rWVlZlJWVsWDBghMX/T/84Q9ccsklZGdnA5Gmn3feeYfhw4czevRojhw5wqBBg06073/729+mpqYGgAcffJCHHnqIESNGsGDBAtatW0dRURHV1dVMnTqV3/3ud+1+npYA2uipd7cw4vDrpCS5GTvnFug36QtlXC7hV9eM5bLfVnLvAS8P+ooZoUsRdzKcdakDURvTNZ3qm3pHWbx4Menp6QwYMIDzzz+fmTNncsMNN/D1r3+df/u3f2PgwIGoKn6/n5tvvpl///d/Z9OmTfh8Pn7wgx9w1VVX8cILL9CjRw8GDBjAyy+/DMCECRPYsWMH//qv/8ru3bv53ve+x6233gpEmo6ee+45fvSjHzF9+nTmzZvHRRddxFtvvcXatWt58sknO+RcLQG0wc7Sata/82cmUcOY0eNIHzGrxbIjemXwz3OG8x9vKN/fGeSfj37A1IZXSE/JhgHndWLUxpi2KCkp4de//jW33347d955J9OnTyc1NZUtW7awY8cOkpKSuPLKK1mwYAFFRUXcfffdlJeX43K5yMrK4qKLLmLSpEm89NJLjB8//sR+X3zxRX784x8DcODAAfr163fis+uuu47rrruOhx56qFPP1RJAGzz4wmKm6EYG5mcw5MJvgOvUb9F+a9ZQhuSnc/fCJB4qD1BevYxJtc8w6OqhkN6zk6I2xrTF1772NSDy5o3b7WblypUAJ90B7Nq1i8LCQr7yla8AkecAPp+P22+/HYCvfvWr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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20558a279b0>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#%fig=使用随机数验证卡方分布\n",
    "a = np.random.normal(size=(300000, 4))\n",
    "cs = np.sum(a**2, axis=1)\n",
    "\n",
    "sample_dist, bins = np.histogram(cs, bins=100, range=(0, 20), density=True)\n",
    "x = 0.5 * (bins[:-1] + bins[1:])\n",
    "chi2_dist = stats.chi2.pdf(x, 4)\n",
    "print(\"max error:\", np.max(np.abs(sample_dist - chi2_dist)))\n",
    "#%hide\n",
    "pl.plot(x, sample_dist, lw=2, label=u\"样本分布\")\n",
    "pl.plot(x, chi2_dist, lw=2, alpha=0.6, label=u\"$\\chi ^{2}$分布\")\n",
    "pl.legend(loc=\"best\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20556ef7278>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#%fig=模拟卡方分布\n",
    "repeat_count = 60000\n",
    "n, k = 100, 5\n",
    "\n",
    "np.random.seed(42)\n",
    "ball_ids = np.random.randint(0, k, size=(repeat_count, n)) #❶\n",
    "counts = np.apply_along_axis(np.bincount, 1, ball_ids, minlength=k) #❷\n",
    "cs2 = np.sum((counts - n/k)**2.0/(n/k), axis=1) #❸\n",
    "k = stats.kde.gaussian_kde(cs2) #❹\n",
    "x = np.linspace(0, 10, 200)\n",
    "pl.plot(x, stats.chi2.pdf(x, 4), lw=2, label=u\"$\\chi ^{2}$分布\")\n",
    "pl.plot(x, k(x), lw=2, color=\"red\", alpha=0.6, label=u\"样本分布\")\n",
    "pl.legend(loc=\"best\")\n",
    "pl.xlim(0, 10);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[80 93 97 64 66]\n",
      "[89 76 79 71 85]\n"
     ]
    }
   ],
   "source": [
    "def choose_balls(probabilities, size):\n",
    "    r = stats.rv_discrete(values=(range(len(probabilities)), probabilities))\n",
    "    s = r.rvs(size=size)\n",
    "    counts = np.bincount(s)    \n",
    "    return counts\n",
    "\n",
    "np.random.seed(42)\n",
    "counts1 = choose_balls([0.18, 0.24, 0.25, 0.16, 0.17], 400)\n",
    "counts2 = choose_balls([0.2]*5, 400)\n",
    "\n",
    "print(counts1)\n",
    "print(counts2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "chi1 = 11.375 p1 = 0.022657601239769634\n",
      "chi2 = 2.55 p2 = 0.6357054527037017\n"
     ]
    }
   ],
   "source": [
    "chi1, p1 = stats.chisquare(counts1)\n",
    "chi2, p2 = stats.chisquare(counts2)\n",
    "\n",
    "print (\"chi1 =\", chi1, \"p1 =\", p1)\n",
    "print (\"chi2 =\", chi2, \"p2 =\", p2)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x20558515c18>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "#%figonly=卡方检验计算的概率为阴影部分的面积\n",
    "x = np.linspace(0, 30, 200)\n",
    "CHI2 = stats.chi2(4)\n",
    "pl.plot(x, CHI2.pdf(x), \"k\", lw=2)\n",
    "pl.vlines(chi1, 0, CHI2.pdf(chi1))\n",
    "pl.vlines(chi2, 0, CHI2.pdf(chi2))\n",
    "pl.fill_between(x[x>chi1], 0, CHI2.pdf(x[x>chi1]), color=\"red\", alpha=1.0)\n",
    "pl.fill_between(x[x>chi2], 0, CHI2.pdf(x[x>chi2]), color=\"green\", alpha=0.5)\n",
    "pl.text(chi1, 0.015, r\"$\\chi^2_1$\", fontsize=14)\n",
    "pl.text(chi2, 0.015, r\"$\\chi^2_2$\", fontsize=14)\n",
    "pl.ylim(0, 0.2)\n",
    "pl.xlim(0, 20);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.0724852071005921\n",
      "0.300384770390566\n"
     ]
    }
   ],
   "source": [
    "table = [[43, 9], [44, 4]]\n",
    "chi2, p, dof, expected = stats.chi2_contingency(table)\n",
    "print(chi2)\n",
    "print(p)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0.43434343434343436, 0.23915695682224306)"
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "stats.fisher_exact(table)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.4"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
